﻿using System;
using System.Collections.Generic;
using System.Net.Http.Headers;

namespace Tavis.Interfaces {
    public enum HypermediaState { Loading, Loaded, NoFormatter, FormatterError };
	
	
	public interface IHypermediaContent {
		string MediaType { get; }
		HttpContentHeaders Headers { get; }

		HypermediaState State { get; }
		Exception Exception { get; }

		object Value { get; }


		/// <summary>Returns link of type T within the context identified by the anchor string</summary>
		T GetLink<T>(string anchor = null) where T : ILink;
        ILink GetLink(string relation, string anchor = null);
        IEnumerable<T> GetLinks<T>(string anchor = null) where T : ILink;
        IEnumerable<ILink> GetLinks(string relation = null, string anchor = null);
        IEnumerable<ILink> GetHeaderLinks();
    }
}
